home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / xwindows / demos / xfract_1.z / xfract_1 / xfractint-1.06 / miscovl.c < prev    next >
C/C++ Source or Header  |  1992-09-28  |  34KB  |  1,193 lines

  1. /*
  2.     Overlayed odds and ends that don't fit anywhere else.
  3. */
  4.  
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #ifndef XFRACT
  9. #include <process.h>
  10. #include <dos.h>
  11. #include <stdarg.h>
  12. #include <io.h>
  13. #else
  14. #include <varargs.h>
  15. #endif
  16. #include "fractint.h"
  17. #include "fractype.h"
  18. #include "helpdefs.h"
  19. #include "prototyp.h"
  20.  
  21. /* routines in this module    */
  22.  
  23. static void write_batch_parms(FILE *,char *,int);
  24. #ifndef XFRACT
  25. static void put_parm(char *parm,...);
  26. #else
  27. static void put_parm();
  28. #endif
  29.  
  30. static void put_parm_line(void);
  31. static int getprec(double,double,double);
  32. static void put_float(int,double,int);
  33. static void put_filename(char *keyword,char *fname);
  34. static void format_item(int choice,char *buf);
  35. static int check_modekey(int curkey,int choice);
  36. static int entcompare(VOIDCONSTPTR p1,VOIDCONSTPTR p2);
  37. static void update_fractint_cfg(void);
  38.  
  39. extern int  cpu;        /* cpu type            */
  40. extern int  fpu;        /* fpu type            */
  41. extern int  iit;        /* iit fpu?            */
  42. extern int  video_type;
  43. extern int  askvideo;
  44. extern char overwrite;        /* 1 means ok to overwrite */
  45. extern int  fillcolor;        /* fill color: -1 = normal*/
  46. extern int  inside;        /* inside color: 1=blue     */
  47. extern int  outside;        /* outside color, if set    */
  48. extern double xxmin,xxmax,yymin,yymax,xx3rd,yy3rd; /* selected screen corners */
  49. extern double param[4];     /* up to four parameters    */
  50. extern int  finattract;     /* finite attractor option  */
  51. extern int  forcesymmetry;
  52. extern int  LogFlag;        /* non-zero if logarithmic palettes */
  53. extern int  rflag, rseed;
  54. extern int  periodicitycheck;
  55. extern int  potflag;        /* continuous potential flag */
  56. extern int  pot16bit;        /* save 16 bit values for continuous potential */
  57. extern double potparam[3];    /* three potential parameters*/
  58. extern int  fractype;        /* if == 0, use Mandelbrot  */
  59. extern BYTE usemag;
  60. extern long delmin;
  61. extern int  maxit;        /* try this many iterations */
  62. extern int  invert;        /* non-zero if inversion active */
  63. extern double inversion[];
  64. extern int  decomp[];
  65. extern int  distest;        /* non-zero if distance estimator   */
  66. extern int  distestwidth;
  67. extern int  init3d[20];     /* '3d=nn/nn/nn/...' values */
  68. extern char floatflag;        /* floating-point fractals? */
  69. extern int  usr_biomorph;
  70. extern char FormFileName[];    /* file to find (type=)formulas in */
  71. extern char FormName[];     /* Name of the Formula (if not null) */
  72. extern char LFileName[];
  73. extern char LName[];
  74. extern char IFSFileName[];
  75. extern char IFSName[];
  76. extern int  bailout;        /* user input bailout value */
  77. extern char useinitorbit;
  78. extern struct complex initorbit;
  79. extern int  display3d;        /* 3D display flag: 0 = OFF */
  80. extern int  loaded3d;
  81. extern char readname[];     /* name of fractal input file */
  82. extern int  showfile;        /* has file been displayed yet? */
  83. extern int  transparent[];
  84. extern char preview;        /* 3D preview mode flag */
  85. extern char showbox;        /* flag to show box and vector in preview */
  86. extern int  RANDOMIZE;        /* Color randomizing factor */
  87. extern int  Targa_Out;  /* Selects full color with light source fills */
  88. extern int  Ambient;        /* Darkness of shadows in light source */
  89. extern int  haze;        /* Amount of haze to factor in in full color */
  90. extern char light_name[];    /* Name of full color .TGA file */
  91. extern int previewfactor;
  92. extern int BRIEF;
  93. extern int RAY;
  94. extern int xtrans;
  95. extern int ytrans;
  96. extern int red_crop_left;
  97. extern int red_crop_right;
  98. extern int blue_crop_left;
  99. extern int blue_crop_right;
  100. extern int red_bright;
  101. extern int blue_bright;
  102. extern int xadjust;
  103. extern int eyeseparation;
  104. extern int glassestype;
  105. extern BYTE trigndx[];
  106. extern int rotate_lo,rotate_hi;
  107. extern int far *ranges;
  108. extern int rangeslen;
  109. extern char CommandFile[80];
  110. extern char CommandName[ITEMNAMELEN+1];
  111. extern char CommandComment1[57];
  112. extern char CommandComment2[57];
  113. extern char usr_stdcalcmode;
  114.  
  115. extern int  colorstate;     /* comments in cmdfiles */
  116. extern int  colors;
  117. extern int  gotrealdac;
  118. extern int  reallyega;
  119. extern char colorfile[];
  120. extern int  mapset;
  121. extern char MAP_name[];
  122. extern BYTE dacbox[256][3];
  123. extern char far *mapdacbox;
  124.  
  125. extern char tstack[4096];
  126. extern char s_cantopen[];
  127. extern char s_cantwrite[];
  128. extern char s_cantcreate[];
  129. extern char s_cantunderstand[];
  130. extern char s_cantfind[];
  131.  
  132. /* fullscreen_choice options */
  133. #define CHOICERETURNKEY 1
  134. #define CHOICEMENU    2
  135. #define CHOICEHELP    4
  136. int  fullscreen_choice(
  137.          int options, char *hdg, char *hdg2, char *instr, int numchoices,
  138.          char **choices, int *attributes, int boxwidth, int boxdepth,
  139.          int colwidth, int current, void (*formatitem)(),
  140.          char *speedstring, int (*speedprompt)(), int (*checkkey)());
  141.  
  142.  
  143. void miscovl_overlay() { }    /* for restore_active_ovly */
  144.  
  145. extern char s_real[];
  146. extern char s_imag[];
  147. extern char s_mult[];
  148. extern char s_sum[];
  149. extern char s_zmag[];
  150. extern char s_bof60[];
  151. extern char s_bof61[];
  152. extern char s_maxiter[];
  153.  
  154. static FILE *parmfile;
  155.  
  156. #ifdef C6
  157. #pragma optimize("e",off)  /* MSC 6.00A messes up next rtn with "e" on */
  158. #endif
  159. void make_batch_file()
  160. {
  161.    int i,numparms;
  162.    char inpcommandfile[80],inpcommandname[ITEMNAMELEN+1];
  163.    char inpcomment1[57],inpcomment2[57];
  164.    struct fullscreenvalues paramvalues[8];
  165.    char far *choices[8];
  166.    int gotinfile;
  167.    char outname[81],buf[256],buf2[128];
  168.    FILE *infile;
  169.    char colorspec[14];
  170.    int maxcolor;
  171.    char *sptr,*sptr2;
  172.    int oldhelpmode;
  173.  
  174.    ENTER_OVLY(OVLY_MISCOVL);
  175.    stackscreen();
  176.    oldhelpmode = helpmode;
  177.    helpmode = HELPPARMFILE;
  178.  
  179.    strcpy(colorspec,"n");
  180.    maxcolor = colors;
  181.    if (gotrealdac && !reallyega) {
  182.       --maxcolor;
  183.       if (maxit < maxcolor) maxcolor = maxit;
  184.       if (inside  > 0 && inside    > maxcolor) maxcolor = inside;
  185.       if (outside > 0 && outside   > maxcolor) maxcolor = outside;
  186.       if (distest < 0 && 0-distest > maxcolor) maxcolor = 0-distest;
  187.       if (decomp[0] > maxcolor) maxcolor = decomp[0] - 1;
  188.       if (potflag && potparam[0] >= maxcolor) maxcolor = potparam[0];
  189.       if (++maxcolor > 256) maxcolor = 256;
  190.       if (colorstate == 0) {      /* default colors */
  191.      if (mapdacbox) {
  192.         colorspec[0] = '@';
  193.         sptr = MAP_name;
  194.         }
  195.      }
  196.       else if (colorstate == 2) { /* colors match colorfile */
  197.      colorspec[0] = '@';
  198.      sptr = colorfile;
  199.      }
  200.       else              /* colors match no .map that we know of */
  201.      colorspec[0] = 'y';
  202.       if (colorspec[0] == '@') {
  203.      if ((sptr2 = strrchr(sptr,SLASHC))) sptr = sptr2 + 1;
  204.      if ((sptr2 = strrchr(sptr,':')))  sptr = sptr2 + 1;
  205.      strncpy(&colorspec[1],sptr,12);
  206.      colorspec[13] = 0;
  207.      }
  208.       }
  209.    strcpy(inpcommandfile,CommandFile);
  210.    strcpy(inpcommandname,CommandName);
  211.    strcpy(inpcomment1,CommandComment1);
  212.    strcpy(inpcomment2,CommandComment2);
  213.    if (CommandName[0] == 0)
  214.       strcpy(inpcommandname,"test");
  215.  
  216.    while (1) {
  217.  
  218. prompt_user:
  219.       {
  220.          static char far tmp[] = {"Parameter file"};  
  221.          choices[0] = tmp;
  222.       }
  223.       paramvalues[0].type = 0x100+56;
  224.       paramvalues[0].uval.sbuf = inpcommandfile;
  225.       {
  226.          static char far tmp[] = {"Name"};  
  227.          choices[1] = tmp;
  228.       }
  229.       paramvalues[1].type = 0x100+ITEMNAMELEN;
  230.       paramvalues[1].uval.sbuf = inpcommandname;
  231.       {
  232.          static char far tmp[] = {"Main comment"};  
  233.          choices[2] = tmp;
  234.       }
  235.       paramvalues[2].type = 0x100+56;
  236.       paramvalues[2].uval.sbuf = inpcomment1;
  237.       {
  238.       static char far tmp[] = {"Second comment"};  
  239.       choices[3] = tmp;
  240.       }
  241.       paramvalues[3].type = 0x100+56;;
  242.       paramvalues[3].uval.sbuf = inpcomment2;
  243.       numparms = 4;
  244.       if (gotrealdac && !reallyega) {
  245.       {
  246.          static char far tmp[] = {"Record colors?"};  
  247.          choices[4] = tmp;
  248.       }
  249.       paramvalues[4].type = 0x100+13;
  250.       paramvalues[4].uval.sbuf = colorspec;
  251.       {
  252.          static char far tmp[] = {"    (no | yes for full info | @filename to point to a map file)"};  
  253.          choices[5] = tmp;
  254.       }
  255.       paramvalues[5].type = '*';
  256.       {
  257.          static char far tmp[] = {"# of colors"};
  258.          choices[6] = tmp;
  259.       }
  260.       paramvalues[6].type = 'i';
  261.       paramvalues[6].uval.ival = maxcolor;
  262.       {
  263.          static char far tmp[] = {"    (if recording full color info)"};  
  264.          choices[7] = tmp;
  265.       }
  266.      paramvalues[7].type = '*';